import { legacy_createStore, applyMiddleware } from "redux"

import { thunk } from "redux-thunk"

import { composeWithDevTools } from "@redux-devtools/extension"

import reducer from "./reducers"
const middlewares = composeWithDevTools(applyMiddleware(thunk))

const store = legacy_createStore(reducer, middlewares)

export default store
/* 
// createStore() 函数共有三个参数：
// 第一个参数：根 reducer
// 第二个参数：Redux 初始状态
// 第三个参数：中间件
const store = createStore(rootReducer, initialState, middlewares)
// 使用方式：
// 1 只传 reducer
createStore(rootReducer)
// 2 传入 reducer 和 中间件
createStore(rootReducer, middlewares)
// 3 传入所有参数
createStore(rootReducer, initialState, middlewares)
*/

/* 总结
   使用 Redux 的套路： *组件 dispatch 异步 action ->
   提供异步 action -> 完成异步操作 ->
   继续 dispatch 普通 action 来发起状态更新 ->
   reducers 处理状态更新*

*/
